`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 11/17/2021 09:00:50 PM
// Design Name: 
// Module Name: top_main
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module top_main(
    input clk,
    input rst,
    input rst_n,
    input key_mode_control,
    input key_add,
    input key_work_rest,
    output [6:0] out,
    output [6:0] out_cnt,
    output [3:0] out_en,
    output [3:0] out_cnt_en,
    output [7:0] led
    );
    wire en_fun,en_config,en_cnt;
    wire [3:0] LD0,LD1,LD2,out0,out1,out2,out3,work0,work1,rest0,rest1,dis0,dis1,dis2,dis3,fin0,fin1,fin2,fin3,count0,count1;
    main_function_module fun(
        .en(en_fun),
        .clk(clk),
        .rst(rst),
        .rst_n(rst_n),
        .key(key_add),
        .LD0(LD0),
        .LD1(LD1),
        .LD2(LD2),
        .work0(work0),
        .work1(work1),
        .rest0(rest0),
        .rest1(rest1),
        .out0(out0),
        .out1(out1),
        .out2(out2),
        .out3(out3),
        .led(led),
        .en_cnt(en_cnt)
    );
    main_count_tomato_module count(
        .clk(clk),
        .en(en_fun),
        .rst_n(rst_n),
        .key_cnt(en_cnt),
        .out0(count0),
        .out1(count1)
    );
    main_config_module myconfig(
        .en(en_config),
        .clk(clk),
        .rst_n(rst_n),
        .key1(key_work_rest),
        .key2(key_add),
        .work0(work0),
        .work1(work1),
        .rest0(rest0),
        .rest1(rest1),
        .dis0(dis0),
        .dis1(dis1),
        .dis2(dis2),
        .dis3(dis3)
    );
    main_workmode_module work_mode(
        .clk(clk),
        .rst_n(rst_n),
        .key_change(key_mode_control),
        .out0(out0),
        .out1(out1),
        .out2(out2),
        .out3(out3),
        .work0(dis0),
        .work1(dis1),
        .rest0(dis2),
        .rest1(dis3),
        .fin0(fin0),
        .fin1(fin1),
        .fin2(fin2),
        .fin3(fin3),
        .en_fun(en_fun),
        .en_config(en_config)
    );
    main_display_module display1(
        .clk(clk),
        .en(1),
        .rst_n(rst_n),
        .in0(fin0),
        .in1(fin1),
        .in2(fin2),
        .in3(fin3),
        .out(out),
        .out_en(out_en)
    );
    main_display_module display2(
        .clk(clk),
        .en(en_fun),
        .rst_n(rst_n),
        .in0(count0),
        .in1(count1),
        .in2(10),
        .in3(10),
        .out(out_cnt),
        .out_en(out_cnt_en)
    );
endmodule
